package cn.itcast.controller;

import cn.itcast.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping("/user")

public class UserConteroller {

    /**
     * 返回字符串
     * @param model
     * @return
     */
    @RequestMapping("/testString")
    public  String testString(Model model){
        System.out.println("testString....");
//        模拟查询数据库
        User user = new User();
        user.setUsername("张三");
        user.setPassword("123456");
        user.setAge(32);
        model.addAttribute("user",user);
        return "success";
    }

    /**
     * void
     * 请求转发一次请求,不用编写项目名称
     * @param request
     * @param response
     * @throws Exception
     */
    @RequestMapping("/testVoid")
    public  void testVoid(HttpServletRequest request, HttpServletResponse response) throws  Exception {
        System.out.println("testVoid....");
//        编写请求转发的程序
//        request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);

//        重定向
//        response.sendRedirect(request.getContextPath()+"/index.jsp");

//        设置中文乱码
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
//        直接会进行响应
        response.getWriter().print("hello---你好");

        return;

    }

    @RequestMapping("/testModleAndView")
    public ModelAndView testModleAndView(Model model){
//        创建ModelAndView对象
        ModelAndView mv = new ModelAndView();

        System.out.println("testModleAndView....");
//        模拟查询数据库
        User user = new User();
        user.setUsername("haha1");
        user.setPassword("1234567");
        user.setAge(327);
//        把user对象存储到view对象中,也会把user对象存到request对象
        mv.addObject("user",user);
//        跳转到那个页面
        mv.setViewName("success");
        return mv;
    }


    /**
     * 使用关键字的方式进行转发或者重定向
     * @return
     */
    @RequestMapping("/testForwardOrRedirect")
    public  String testForwardOrRedirect(){
        System.out.println("testForwardOrRedirect....");

//        请求转发
//        return "forward:/WEB-INF/pages/success.jsp";

//        重定向
        return "redirect:/index.jsp";
    }


    /**
     * ajax请求响应
     * 模拟异步请求响应
     */
    @RequestMapping("/testAjax")
    public  @ResponseBody User testAjax(@RequestBody User user){
        System.out.println("testAjax....");
//        客户端发送阿加西的请求，传的是json字符串，后端把json字符串封装到user对象中
        System.out.println(user);
//        做响应.
        user.setUsername("yf");
        user.setAge(23);

        return user;

    }
}
